package itheima02;
/*
    什么时候加载类的.class文件到内存中?
        1.创建本类的对象
        2.创建子类对象
        3.使用java命令,运行主类时(含有main方法的类)
        4.使用类中的静态内容
        5.使用反射奇数,获取.class文件对应的Class类型的对象
            任意类型,都有一个隐藏的class属性
 */
public class Demo02LoadClass {
    public static void main(String[] args) throws ClassNotFoundException {
        //1.创建本类的对象
        //new Person();
        //2.创建子类对象
        //创建子类调用父类
        new Student();
        //4.使用类中的静态内容
        System.out.println(Person.COUNTRY);

        //5.使用反射奇数,获取.class文件对应的Class类型的对象
        //forName使用给定的类加载器返回与给定字符串名称的类或接口相关联的 Class对象。
        //调用Person在堆内存Class对象
        //执行静态代码块
        //执行结果  类被加载了....

        //如果上面调用子类对象时候也调用父类对象，由于对象只能被加载一次下面的执行语句不会再执行
        //执行结果
        //类被加载了....
        //CHINA
        //类被加载了....不会再被执行
       //Class<?> c = Class.forName("itheima02.Person");


    }
}
